12-6. WWWプログラミング (1) HTTP のプロトコル * HTTP( HyperText Transfer Protocol ) の仕組み 詳しくは HTTP の RFC ドキュメントをどうぞといいたいが、 実際ちょっと見たぐらいで 理解できるものでない。いわば仕様書なので文字ばかりである。HTTP 1.0 の RFC につい ては日本語訳も出ている。HTTP 1.0 では通信するのに GET, POST, HEAD という3つのメ ソッドを定義している。GET と POST は超基本なので説明記事はよく見かける。HTTP 1.1 は97年1月に出た RFC 2068 がもとになっていて、PUT とか DELETE というメソッドを 追加したことになっている。Apache はバ−ジョン 1.2 から HTTP 1.1 に対応し、これら PUT, DELETE, TRACE をサポ−トしたとある。 Netscape Enterprise Server は 3.0 から HTTP 1.1 条件付きで対応し、PUT のみサポ−トしている。 下に telnet でWWWアクセスしたところを示す。WWWブラウザがやっているのと同じ ことをシュミレ−トしているわけである。cgi-bin プログラムにアクセスする場合の GET と POST を示している。ただファイルをとってくるような場合も GET で、POST より簡単 に使える。プログラム名の後に ? で区切って、 WWWサ−バに渡す引き数を記入してい るだけである。GET, HEAD, POST などのメソッドを発行すると、WWWサ−バから結果が かえってくる。成功なら 200 である。他 300 がコンテンツ移動、400 がクライアントの エラ−、500 がサ−バのエラ−という具合である。実際はもっと細分化されていて403 が Forbiddn というように種々ある。 % telnet localhost 80 GET /cgi-bin/test.cgi?name=v1&name2=v2 HTTP/1.0 << リタ−ン。 << リタ−ン。 % telnet localhost 80 POST /cgi-bin/test.cgi HTTP/1.0 Content-Length:16 << リタ−ン。 << リタ−ン。ここ1個空行を開けること、ポイントです。 name=v1&name2=v2 << リタ−ン。ここに送りたい内容を記述する。 [ URL と URI ] 両者だいぶ混乱しているようである。URL が http://www.tcp-ip.or.jp/~ikken/int.html なら URI は /~ikken/int.html と解釈していいかと思う。 URI はWWWサ−バ上のリソ −スを特定する。下記は PHP3 のパラメ−タで URI を出してみたところである。 URL : Uniform Resource Locator URI : Universal Resource Identifier /usr/local/apache/htdocs/put.php3 これを telnet で "GET /put.php3 HTTP/1.0" と --------------------------------- アクセスすると、 | と出て来る。 * HTTP 1.1 の場合の注意 $ telnet indy2 8080 GET / HTTP/1.1 << リタ−ン。デフォルトで index.html をゲットしにいく。 HOST: indy2 << リタ−ン。またはIPアドレスを入れる。ここも入れること。 << リタ−ン。 HTTP/1.1 200 OK Date: Wed, 17 May 2000 07:39:26 GMT Server: Apache/1.3.9 (Unix) Last-Modified: Fri, 12 May 2000 07:24:23 GMT ETag: "2aaa3-8b8-391bb1a7" Accept-Ranges: bytes Content-Length: 2232 << ファイルのバイト数が出ている。 Content-Type: text/html | しばらくして、5秒ぐらいでコネクションが切れる。 Connection closed by foreign host. * PUT と DELETE について HTTP でWWWサ−バにあるファイルのリストをとる。プロテクションを変更する。 消去 する。ファイル名を変更する。ファイルをアップロ−ドする。NFS の代わりに HTTP でや れないものだろうか。HTTP 1.1 はサ−バにコンテンツを送る PUT、 それにファイル消去 の DELETE をサポ−トしているとある。それなら telnet で、 とりあえず Apache 1.3.9 にアクセスして "DELETE /test.html HTTP/1.1" とかやったら消えるはずだ。それが消え ない。DELETE 自体認識してないようだ。それなら PUT はどうだ。Netscape Composer か ら HTML ファイルをアップロ−ドしてみる。これもできない。一体どうなっているのか?。 1) mode_put という Apache のモジュ−ルが PUT と DELETE をサポ−トする。デフォ ルトでは Apache には入ってない。CERN にも同様 PUT プログラムがある。 2) POST メソッドでファイルを送り込む。PHP3 を使った例がある。そりゃ POST を使 えば標準入力から送り込める。今は PUT と言うメソッドがどうか知りたいのだ。 3) httpd.conf に Script PUT /cgi-bin/put.exe というように追加する。よく分から なかった。意味がないのではないかと思う。 いろいろ検討の結果、mode_put の方法でファイルのアップロ−ドと消去ができた。 これ だけでは NFS の代わりにはならない。プロテクションやファイル名の変更は cgi-bin 経 由ということになるか。あるいは PHP3 にはそのような関数もあるから、それでもいいか も知れない。SSI( Server Side Include ) を使う手もある。 [ POST メソッドを使う ] PHP3 のマニュアルの Chapter 15.Handling file uploads、"POST method uploads" に一 応やり方が書いてある。「UNIX MAGAZINE」'97/11、P.104 にも記事があった。 まとめる とテキストでもバイナリでもいける、ファイルは相手先のテンポラリ・ディレクトリにで きるということだ。こんなような記述。 ppp.php3 ------------------------------------------------------------------- | | |Send this file: | | |?> [ Script 宣言ではどうか ] httpd.conf で "Script PUT /put.php3" とするところを PUT2 としてみた。Apache を起 動しようとすると、httpd.conf の構文がおかしい、Script 用の知らないメソッドあると エラ−が出た。一応 PUT と DELETE というメソッドが、Apache 1.3.9 の HTTP 1.1 には 有るみたいだ。しかし、この Script の記述は変だ。何もこんな風にするならただの GET で cgi-bin を使ってもいっしょじゃないか。何か意味があるのかな。 /usr/local/apache/cgi-bin/dell << 中身は何でも構わないということだよね。 ------------------------------ |#!/bin/sh |echo Content-type: text/plain |echo |echo $PATH_INFO /usr/local/apache/conf/httpd.conf --------------------------------------- | |Script DELETE /cgi-bin/dell << PUT も入れたければ同様記述する。 | | % telnet localhost 8080 DELETE /kero.doc HTTP/1.1 << HTTP 1.0 と書いてもOKだった。WWWサ−バか host: indy2 らの応答は同じく HTTP/1.1 200 OK だった。 HTTP/1.1 200 OK | * Netscape Enterprise Server のFAQから抜粋 `2h/10/S 追記 かつて Shilicon Graphis のEWSに、この Netscape Enterprise Server のライセンス を購入しWebサ−バとして動かしていた時がある。まだ Apache が出る前のことだった。 確かホ−ムペ−ジの cgi-bin に PHP を使いたいということで Apache に変えたのだった。 製品の概要 1. Netscape Enterprise Server とは?� 2. Netscape Enterprise Server を必要とするのは誰ですか?� 3. Enterprise Server 2.0 と Netscape Commerce Server の違いを説明してください。 4. Enterprise Server 2.0 と 3.0 の主な違いを教えてください。 5. Commerce Server から Enterprise Server にアップグレードする手段はありますか 6. Enterprise Server 3.0 の一般ユーザ向けの出荷時期を教えてください。� 7. Enterprise Server 2.0 から Enterprise Server 3.0 へのアップグレード方法を教 えてください。 8. Enterprise Server と FastTrack Server は、 どのような基準で選択すればよいで しょうか?� 9. FastTrack 3.0 のリリース予定を教えてください。 WEB パブリシング機能 | プログラミング機能 1. Enterprise Server での様々なプログラミング方法を説明してください。 2. Enterprise Server では、 どのようなアプリケーション開発環境がサポートされま すか?� 3. LiveWireとは? 4. Enterprise Server 3.0 の新しいデータベース・アクセス機能を紹介してください。 5. Enterprise Serverでは、Visual Basic と Object Linking and Embedding(OLE) が サポートされますか?� 6. Enterprise ServerではOpen Database Connectivity(ODBC)がサポートされますか?� 7. Netscape Internet Service Broker(NISB) とは? 8. Internet Inter-ORB Protocol(IIOP) とは? 9. Visigenics VisiBroker と Internet Service Broker の違いを説明してください。 10. Enterprise Server 2.0用に作成したNSAPIアプリケーションは、Enterprise Server 3.0のもとで実行できますか? プログラミング機能 Enterprise Server での様々なプログラミング方法を説明してください。 Enterprise Server 3.0 は、 次のような様々な機能を使用して拡張またはプログラ ミングすることができます。 o サーバ側のJavaScript − 状態管理機能とデータベース・アクセス機能も利用可能 o サーバ側のJava − サーバ・プロセスの内部または外部で実行可能 o Web Application Interface − C、C++、Java、JavaScript とともに使用してサー バの機能をカスタマイズすることが可能 o Internet Inter-ORB�Protocol(IIOP) − Netscape Internet Service Broker を通 じて登録されたローカル関数を呼び出すか、別のマシン上で動作しているリモート ・プロシージャを呼び出すことが可能 o Netscape Server Application Programming Interface(NSAPI) − C 言語とともに 使用して、サーバの機能を細かく調整することが可能 o C、C++、Java、Perl、Tcl/Tk、各種シェル・スクリプト言語のホストなどの様々な 言語で書かれたCommon�Gateway Interface(CGI)プログラム o サーバ解析HTMLによるコマンド行(シェル)プログラムの実行 o WinCGIによるVisual BasicモジュールやOLEコンポーネントとの結合(Windowsのみ) (2) HTTP でファイルのアップロ−ド * Apache に mod_put モジュ−ルを追加する Apache の標準モジュ−ルの中には、この mod_put モジュ−ルは入ってない。次のとこに 行って mod_put.tar.gz を取ってくる。展開するとカレントディレクトリに mod_put-1.3 というディレクトリができて、mod_put.c と mod_put.html というファイルができる。先 ずmod_put.html を見てみる。大きなセキュリティホ−ルができる可能性があるので、 注 意されたしといった英文が読める。 この mod_put.c モジュ−ルは Apache 1.2.x、1.3.x に対応していることも読める。Apache は5章で DSO 対応、それに PHP3 + PostgreSQL + XML を加えた。更に mod_put.c モジュ−ルを追加することにする。 http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html % cd /usr/local/source/apache_1.3.9 % ./configure --enable-module=so --enable-module=proxy --add-module=mod_put.c % make % make install ちゃんと追加されたか /usr/local/apache/bin/httpd -l で、mod_put.c が最後に加わっ ているか確認しておく。 make install の際 /usr/local/apache/conf に httpd.conf が あると上書きされない。しかしあらたにできる httpd.conf は特に変わりがないので、前 のを使ってもよさそうである。 /usr/local/apache/conf/httpd.conf PHP3 + PostgreSQL + XML で ------------------------------------------ 追加したようなところも示す。 | | |LoadFile /usr/local/pgsql/lib/libpq.so |LoadModule php3_module libexec/libphp3.so |Port 8080 |User katou |Group user | | | | Options Indexes FollowSymLinks << Indexes は index.html など頭のファイルが | AllowOverride None ない場合、そのディレクトリを一覧表示する。 | Order allow,deny | Allow from all | EnablePut On << この2つ追加 | EnableDelete On << すること。 | | AuthType Basic \ | AuthName "Web publishing" |こんなようにしてアクセスできるユ−ザを制限す | AuthUserFile /www/etc/passwd |べしと mod_put.html には書いてあった。 | AuthGroupFile /www/etc/group | | |アップロ−ドしたファイルのモ−ドは、umask で | require valid-user |指定できるようだ。デフォルトは 007 である。 | / | | | |AddType application/x-httpd-php3 .php3 |AddType application/x-httpd-php3-source .phps |AddType application/x-tar .tgz |AddType text/html .shtml << この2つ SSI 用のファイル拡張子。こんなん |AddHandler server-parsed .shtml << を実行する。 | ----------------- | -------------------------------- | | ファイルの | 送信 | |開く:| http://192.9.10.1:443/dav |▼| | アイコンを | 切り取り | | -------------------------------- | 右クリック | コピ− | | | した画面 | ショ−トカット| | 〆 Webフォルダとして開く | | 削除 | | | | 名前の変更 | | [OK] [キャンセル] [参照] | | プロパティ | ----------------------------------------- ----------------- Windows の画面に出ているアイコンの "マイコンピュ−タ" に "Web フォルダ" ができて いた。"ネットワ−クコンピュ−タ" にも "192.9.10.1 上の dav" とできていた。これら クリックすると、上の IE ででてきた画面と同じだった。 もう一つ "マイコンピュ−タ" 画面を出し、ファイルを dav にドラッグしたらコピ−もできた。しかし、WebDAV ディレ クトリの中でファイルのコピ−/貼り付けはできなかった。 * Apache 以外の WebDAV 実装 市販のグル−プウェアのソフトにも WebDAV 機能が入っているのがある。日立のGroupmax、 Microsoft の SharePoint もそう。サイボウズはどうも WebDAV 機能はなく独自の方式ら しい。desknet's も独自なのではないか。 WebDAV は当初なかなか使いものにならなかっ たのでないか。それで独自にファイルをアップロ−ドする機構を作って、そのまま使われ ているのでないか。blog と Wiki もファイルをアップロ−ドするのは cgi-bin を使うと か、独自なものらしい。いや初めて WebDAV をテストしてみた2002年当時の Windows OSではそこそこ使えたような記憶がある。多分その頃はまるで知られていなかったこと と、やはり Windows のファイル共有の方が簡単であること、それで WebDAVは広まること が無かったのでないか。その後 Windows XP Professional がでてきて、 長くパソコンの デファクト・スタンダ−ドOSになっていったのだが、 このOSは Apache WebDAV に対 して全く順応してなかった。混乱をもたらすだけのものだった。`2a/03 追記。 * 参考 「UNIX MAGAZINE」 2002/03, P.128〜133, "UNIX便利帖 WebDAV", Apache ヘの組込み。 > 2002/04, P.103〜108, "WebDAVクライアント", cadaver と DAV Explorer 使い方など。 「Software Design」 2001/12, P.103〜123, "WebDAV を使いこなす"。 > http://www.atmarkit.co.jp/ の記事とほぼ同じ。筆者も同じ。 http://webdav.todo.gr.jp/ WebDAV Resources JP > http://www.webdav.org/ の日本の公式サイトというべきところ。 「NETWORK MAGAZINE」2003/11, P.180〜183, Microsoft のフリ−メ−ルサ−ビス Hotmail が、Outlook や Outlook Express で送受信できるのは WebDAV と XML を使っているから。 ------------------------------------------------------------------------------------ [ 付録 ] Apollo での Mosaic のコンパイル&リンク 1995/04/13 ● libdtm ライブラリ これは特別にサポ−トする場合に必要である。DTM,HDM て何なのかな?。 $ fpat ?*.c -p malloc.h -lm File: dtm.c, dtminit.c, dtmnserv.c $ cc dtm arch.h: 325: Unable to find include file 'sys/limits.h'. /*# include */ ↓ # include 変更した。 /bin/make sun でやったらOK。 ● libwww2 ライブラリ cc HTAccess.c -def L10N MOTIF XMOSAIC cc HTAlert.c -def L10N MOTIF XMOSAIC cc HTAnchor.c -def L10N MOTIF XMOSAIC cc HTAtom.c -def L10N MOTIF XMOSAIC cc HTSort.c -def L10N MOTIF XMOSAIC cc HTChunk.c -def L10N MOTIF XMOSAIC cc HTFTP.c -def L10N MOTIF XMOSAIC cc HTFWriter.c -def L10N MOTIF XMOSAIC cc HTFile.c -def L10N MOTIF XMOSAIC cc HTFormat.c -def L10N MOTIF XMOSAIC cc HTGopher.c -def L10N MOTIF XMOSAIC cc HTInit.c -def L10N MOTIF XMOSAIC cc HTList.c -def L10N MOTIF XMOSAIC cc HTMIME.c -def L10N MOTIF XMOSAIC cc HTML.c -def L10N MOTIF XMOSAIC cc HTMLDTD.c -def L10N MOTIF XMOSAIC cc HTMLGen.c -def L10N MOTIF XMOSAIC cc HTNews.c -def L10N MOTIF XMOSAIC cc HTParse.c -def L10N MOTIF XMOSAIC cc HTPlain.c -def L10N MOTIF XMOSAIC cc HTMosaicHTML.c -def L10N MOTIF XMOSAIC cc HTString.c -def L10N MOTIF XMOSAIC cc HTTCP.c -def L10N MOTIF XMOSAIC cc HTTP.c -def L10N MOTIF XMOSAIC cc HTTelnet.c -def L10N MOTIF XMOSAIC cc HTWSRC.c -def L10N MOTIF XMOSAIC cc HTWriter.c -def L10N MOTIF XMOSAIC cc SGML.c -def L10N MOTIF XMOSAIC cc HTIcon.c -def L10N MOTIF XMOSAIC cc HTCompressed.c -def L10N MOTIF XMOSAIC cc HTAAUtil.c -def L10N MOTIF XMOSAIC cc HTAssoc.c -def L10N MOTIF XMOSAIC cc HTUU.c -def L10N MOTIF XMOSAIC cc HTAABrow.c -def L10N MOTIF XMOSAIC lbr -c Alibwww.a HTAccess.bin HTAlert.bin HTAnchor.bin HTAtom.bin HTSort.bin HTChunk.bin HTFTP.bin HTFWriter.bin HTFile.bin HTFormat.bin HTGopher.bin HTInit.bin HTList.bin HTMIME.bin HTML.bin HTMLDTD.bin HTMLGen.bin HTNews.bin HTParse.bin HTPlain.bin HTMosaicHTML.bin HTString.bin HTTCP.bin HTTP.bin HTTelnet.bin HTWSRC.bin HTWriter.bin SGML.bin HTIcon.bin HTCompressed.bin HTAAUtil.bin HTAssoc.bin HTUU.bin HTAABrow.bin ● libXmx ライブラリ cc Xmx.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc Xmx2.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 lbr -c AlibXmx.a Xmx.bin Xmx2.bin ● libhtmlw ライブラリ * ル−トの make でコンパイルした状況 cd libhtmlw; make CC=cc RANLIB=/bin/true CFLAGS="-g -DL10N -I/usr/X11/include -I/usr/X11/include/Xm -DMOTIF -DXMOSAIC" cc -g -DL10N -I/usr/X11/include -I/usr/X11/include/Xm -DMOTIF -DXMOSAIC -c HTML.c ******** Line 833 of "HTML.c": [Warning #080] Illegal pointer combination with "?": * malloc.h インクル−ドをコメントにした HTML-PSformat.c * Apollo コンパイル cc HTML.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 -inlib /lib/xmulib.r5 cc HTMLlists.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc HTMLformat.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc HTMLparse.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc HTMLimages.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc HTMLwidgets.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc HTML-PSformat.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc DrawingArea.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 cc HTMLjot.c -def L10N MOTIF XMOSAIC -inlib /lib/xmlib1.2 lbr -c Alibhtmlw.a HTML.bin HTMLlists.bin HTMLformat.bin HTMLparse.bin HTMLimages.bin HTMLwidgets.bin HTML-PSformat.bin DrawingArea.bin HTMLjot.bin ● src のところ * ル−トの make でコンパイルした状況 cd src; make CC=cc RANLIB=/bin/true CFLAGS=" -DL10N -I/usr/X11/include -I/usr/X11/include/Xm -I.. -I../libXmx -I../libwww2" AUX_CFLAGS= X_LIBS="-L/usr/X11/lib -lXm -lXmu -lXt -lX11" SYS_LIBS=" " DTM_LIBS="" HDF_LIBS="" WAIS_LIBS="" LIBWWW_DIR=../libwww2 cc -DL10N -I/usr/X11/include -I/usr/X11/include/Xm -I.. -I../libXmx -I../libwww2 -c main.c cc -o Mosaic main.o gui.o gui-dialogs.o gui-menubar.o gui-documents.o mo-www.o mo-dtm.o hotlist.o whine.o history.o annotate.o pan.o grpan.o grpan-www.o audan.o globalhist.o img.o picread.o xpmhash.o xpmread.o gifread.o pixmaps.o medcut.o mo-hdf.o hdf-browse.o ../libwww2/libwww.a ../libhtmlw/libhtmlw.a ../libXmx/libXmx.a -L/usr/X11/lib -lXm -lXmu -lXt -lX11 Welcome to NCSA Mosaic. * Apollo コンパイル cc main.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc gui.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 -inlib /lib/xmulib.r5 cc gui-dialogs.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc gui-menubar.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc gui-documents.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc mo-www.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc mo-dtm.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc hotlist.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc whine.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc history.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc annotate.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc pan.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc grpan.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc grpan-www.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc audan.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc globalhist.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc img.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc picread.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc xpmhash.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc xpmread.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc gifread.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc pixmaps.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc medcut.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc mo-hdf.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 cc hdf-browse.c -def L10N -idir ../ ../libXmx ../libwww2 -inlib /lib/xmlib1.2 lbr -c Asrc.a main.bin gui.bin gui-dialogs.bin gui-menubar.bin gui-documents.bin mo-www.bin mo-dtm.bin hotlist.bin whine.bin history.bin annotate.bin pan.bin grpan.bin grpan-www.bin audan.bin globalhist.bin img.bin picread.bin xpmhash.bin xpmread.bin gifread.bin pixmaps.bin medcut.bin mo-hdf.bin hdf-browse.bin ● src でバインドする * 結果 $ bind Asrc.a ../libwww2/Alibwww.a ../libhtmlw/Alibhtmlw.a ../libXmx/AlibXmx.a -b mosaic file coff 1028528 mosaic ができた。 $ bind Asrc.a ../libwww2/Alibwww.a ../libhtmlw/Alibhtmlw.a ../libXmx/AlibXmx.a -b mosaic -merge file coff 1026733 mosaic ができた。 * Mosaic の make でコンパイル&リンクした場合 file coff 3323257 Mosaic ができた。 ● 日本語フォントを使えるようにする * Apollo のフォントのありか /usr/X11/lib/fonts/100dpi/fonts.dir /usr/X11/lib/fonts/75dpi/fonts.dir /usr/X11/lib/fonts/hp_roman8/75dpi/fonts.dir /usr/X11/lib/fonts/iso_8859.1/100dpi/fonts.dir /usr/X11/lib/fonts/iso_8859.1/75dpi/fonts.dir /usr/X11/lib/fonts/hp_kana8/fonts.dir /usr/apollo/japan/X11/fonts/fonts.dir /usr/X11/examples/motif/fonts/fonts.dir /usr/X11/lib/fonts/misc/fonts.dir /usr/X11/lib/fonts/misc/fonts.alias /usr/X11/bin * 日本語フォントを使えるようにする 1995/04/11 /usr/X11/lib/fonts/misc/fonts.dir の修正 --------------------------------------- |276 << 元 274 | | << この2つ追加 |kf16.snf -jis-fixed-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0 |kf24.snf -jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0 /usr/apollo/japan/X11/fonts/kf16.snf, kf24.snf を /usr/X11/lib/fonts/misc/ にコピ−する。 /usr/X11/lib/fonts/misc/fonts.alias これは変更なし ----------------------------------------------------- |kanji16 -jis-fixed-medium-r-normal--16-*-*-*-*-*-jisx0208.1983-0 |kanji24 -jis-fixed-medium-r-normal--24-*-*-*-*-*-jisx0208.1983-0 |-jis-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1983-0 -jis-fixed- | medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0 |-jis-fixed-medium-r-normal--24-170-100-100-c-240-jisx0208.1983-0 -jis-fixed- | medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0 |A B << フォントAを指定したらBを使うよということ。 * Apollo で使える日本語フォント /usr/X11/lib/fonts/misc/fonts.dir ok k14.snf.Z -misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0 7x14rk.snf.Z -misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0 8x16rk.snf.Z -sony-fixed-medium-r-normal--16-120-100-100-c-80-jisx0201.1976-0 12x24rk.snf.Z -sony-fixed-medium-r-normal--24-170-100-100-c-120-jisx0201.1976-0 /usr/X11/examples/motif/fonts/fonts.dir (日本語全部、EUCコ−ド) ng k14-1.snf -k14-screen-medium-r-normal--14-140-75-75-m-140-jisx0208.1983-1 (数字とアルファベットのみ) hbr8x13.snf -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-8 (数字とアルファベットとカタカナのみ) rkana14.snf -romankana14-screen-medium-r-normal--14-140-75-75-m-70-jisx0201.1976-0 /usr/X11/lib/fonts/hp_kana8/fonts.dir kana.10x18.snf.Z kana.10x18 カタカナが入っている kana.10x20.snf.Z kana.10x20 kana.12x24.snf.Z kana.12x24 kana.8x16.snf.Z kana.8x16 kana.8x18.snf.Z kana.8x18 /usr/apollo/japan/X11/fonts/fonts.dir af12.snf af12 数字とアルファベットのみ af16.snf af16 数字とアルファベットのみ af24.snf af24 数字とアルファベットのみ ok kf12.snf kf12 日本語全部 JISコ−ド ok kf16.snf kf16 日本語全部 JISコ−ド ok kf24.snf kf24 日本語全部 JISコ−ド ● フォントの作成と変換 * Apollo の X-Window のフォントの注意 DM と X-Window リリ−ス5を両方同時に使う場合の設定では、フォントの xxx.snf がな いとダメである。リリ−ス5では、本当は xxx.pcf を使うが Apollo は特殊である。 ただし mkfontdir では xxx.pcf を見てフォント情報を作成するので、 xlsfonts では使 えるとでても、xfd -fn xxx で実際に表示しようとすると出てこないといった事態になる。 * xlsfonts リストにはあるが、使えないフォント 7x14bold -misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 * フォントのフォ−マット BDF Bitmap Distribution Format PCF Portable Compiled Format * $ stmkfont stmkfont - font compiler to create X and PCL fonts -b string Specifies BDF-to-SNF converter command line arguments. -B progname Specifies alternate BDF-to-SNF converter (not 'bdftosnf'). * % bdftopcf -o myfont.pcf myfont.bdf Apollo にはないコマンド。 X5用のフォントに変換するツ−ル。 * $ bdftosnf Apollo にもある。 $ edfont /sys/dm/fonts/kanji16 ok edfont はXの BDF フォントを編集するコ $ edfont /nissei/cad/katou/k14.bdf ok マンド。特別に DM の kanji16 なども編 集できる。 $ kedfont /sys/dm/fonts/kanji16 ng $ edfont /sys/dm/fonts/kf16 ng $ kedfont /sys/dm/fonts/kf16 ok * フォントの圧縮と解凍 $ /usr/ucb/uncompress file.tar.Z $ /bin/tar xvf file.tar ● フォントの新規登録 $ wd /usr/apollo/japan/X11/fonts/ $ ld af12.snf af16.snf af24.snf kf12.snf kf16.snf $ xfd -fn kf16 エラ−ででない。fonts.dir がないとダメ!。 $ mkfontdir << fonts.dir を作成する。 $ ld af12.snf af16.snf af24.snf kf12.snf kf16.snf fonts.dir $ xset fp+ /usr/apollo/japan/X11/fonts/ << フォントパスを設定する。 $ xfd -fn kf16 << 文字の一覧が表示される。 ● フォントの登録ユ−ティリティ * xset fp+ /usr/X11/examples/motif/fonts これで使えるフォントを追加することができる。現在有効なフォントをリストするには xlsfonts コマンドがある。 /usr/X11/examples/motif/fonts/fonts.dir ------------------------------------------------------------------- |3 |k14-1.snf -k14-screen-medium-r-normal--14-140-75-75-m-140-jisx0208.1983-1 |hbr8x13.snf -misc-fixed-medium-r-normal--13-120-75-75-c-80-iso8859-8 |rkana14.snf -romankana14-screen-medium-r-normal--14-140-75-75-m-70-jisx0201.1976-0 $ xlsfonts -adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1 -adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1 -adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1 -adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1 | 追加されていることが分かる。 -romankana14-screen-medium-r-normal--14-140-75-75-m-70-jisx0201.1976-0 | * $ xset q << フォントパスのデフォルトの設定。 | Colors: default colormap: 0x80065 BlackPixel: 0 WhitePixel: 7 Font Path: /usr/X11/lib/fonts/misc/,/usr/X11/lib/fonts/75dpi/,/usr/X11/lib/fonts/100dpi/ $ xset +fp /usr/X11/lib/fonts/misc/ << フォントパスを登録する。 $ xset -fp /usr/X11/lib/fonts/misc/ << フォントパスを削除する。 $ xset fp default << フォントパスをデフォルトに戻す。 $ xset fp rehash << フォントパスを登録、 削除した場合はこのコ マンドをやるように推奨されている。 * 参考で INDY でのフォント alias > kanji16 --gothic-medium-r-normal--16-150-75-75-c-160-jisx0208.1983-0 実際のフォント Kg16.pcf.Z alias > kanji24 --mincho-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-0 実際のフォント Km24.pcf.Z フォントパスのデフォルトの設定 /usr/lib/X11/fonts/100dpi,75dpi,misc * フォント情報の表示 $ showsnf -g /usr/X11/examples/motif/fonts/k14-1.snf version1: 0x4 (version2: 0x4) noOverlap constantMetrics terminalFont constantWidth inkInside inkMetrics printing direction: left-to-right first character: 0xa1 last characters: 0xfe number of font properties: 0x7 COPYRIGHT Public domain font. Share and enjoy. FONT -k14-screen-medium-r-normal--14-140-75-75-m-140-jisx0208.1983-1 POINT_SIZE 60 WEIGHT 25789 RESOLUTION 107 X_HEIGHT 12 QUAD_WIDTH 14 default character: 0xa1a1 font descent: 2 font ascent: 12 minbounds: rbearing descent width exists lbearing ascent byteOffset ciFlags 14 0 2 12 14 0x0 no 0x0 maxbounds: rbearing descent width exists lbearing ascent byteOffset ciFlags 14 0 2 12 14 0x2f02c no 0x0 ink minbounds: rbearing descent width exists lbearing ascent byteOffset ciFlags 0 0 -11 -1 14 0x0 no 0x0 ink maxbounds: rbearing descent width exists lbearing ascent byteOffset ciFlags 14 10 2 12 14 0x0 no 0x0 FontInfo struct: virtual memory address == 81000 size == 6c CharInfo array: virtual memory base address == 8106c size == 1ed80 ink CharInfo array: virtual memory base address == cef34 size == 1ed80 glyph block: virtual memory address == 9fdec size == 2f02c rbearing descent width exists number lbearing ascent byteOffset ciFlags 161 14 0 2 12 14 0x0 yes 0x0 162 14 0 2 12 14 0x1c yes 0x0 163 14 0 2 12 14 0x38 yes 0x0 164 14 0 2 12 14 0x54 yes 0x0 165 14 0 2 12 14 0x70 yes 0x0 166 14 0 2 12 14 0x8c yes 0x0 | * SR10.4.1 1999/10/20 $ ld //node_xxx/usr/X11/bin/ X Xapollo Xdomain atobm bdftosnf bitmap bmtoa chfonts dmtox dmwin fs hpterm hpvue2 hpvue3 ico maze mkfontdir mkfontdir.05.19 mkfontdir.05.19.1 mkfontdir.preR5 muncher mwm plaid puzzle resize showsnf startx stconv stlicense stload stmkdirs stmkfont toxdomain uwm vuehelp x10tox11 x11start xauth xbiff xcalc xclient xclipboard xclock xcmsdb xcutsel xdpr xdpyinfo xedit xev xeyes xfbs xfc xfd xhost xinit xkill xload xlogo xlsfonts xlswins xmag xman xmh xmodmap xownroot xpr xprop xrdb xrefresh xsession xset xsetroot xterm xwd xwininfo xwud SR10.4.1 の xset を 10.4.0 にコピ−したらだめだった。xlsfonts はOK。 $ xset ?(pmlib/loader) Problem loading library "/lib/xmulib.r5" - name not found (OS/naming server) ?(sh) "xset" - unable to install a library required by object module (process manager/loader) //node_xxx の 10.4.0 のオ−ソライズエリアに入っていた。 $ ld /install/ri.apollo.os.v.10.4/usr/X11/bin": adjust atobm bdftosnf bitmap bmtoa dmtox dmwin hpvue2 ico maze mkfontdir muncher plaid puzzle resize rgb showsnf startx stconv stlicense stload stmkdirs stmkfont toxdomain uwm vuefile vuehelp vuepad vuestyle vuewm x10tox11 x11start xauth xbiff xcalc xclient xclipboard xclock xcutsel xdpr xdpyinfo xedit xev xeyes xfbs xfd xhost xinit xkill xload xlogo xlsfonts xlswins xmag xman xmh xmodmap xownroot xpr xprop xrdb xrefresh xsession xset xsetroot xterm xwd xwininfo xwud